昨天提到Consistency Level的設定可以決定一致性的強度,而且是由Client端發出request時決定要用何種選項。
這樣表示執行語法的時候都可以用不一樣的CL,選擇怎樣的CL強度取決於所需要的資料的特性。
可設定的選項如下:
ANY:表示寫入時,至少有一份複寫成功,讀取時亦然。這個設定提供了最低的一致性,但是最終資料仍會一致。
QUORUM:表示不論是幾個datacenter,當讀取或寫入時,至少要有過半的複寫回應成功,過半的公式為當RF=3 則過半為(3/2+1)無條件捨去得到2。
**ONE:表示表示不論是幾個datacenter,只要有一台複寫回應就成功。
LOCAL_ONE:表示在同一個data center裡只要有一台複寫回應就算成功。
LOCAL_QUORUM:表示在同一個datacenter裡只要有過半複寫回應就算成功。
EACH_QUORUM:表示每一個datacenter都要有過半的複寫回應,假設現在有DC1與DC2,RF皆等於3,那至少需要3*2/2+1,4個複寫回應才算成功,但是這4個複寫必須是DC1跟DC2各兩個。
ALL:全部的複寫都必須回應,能達到最高的一致性但是也犧牲最多的可用性。